<?php
namespace DAOZHEN\D;

class Admin_Tables extends \ZHMVC\D\DataBase
{

    public function add($qianzui, $pathname1, $pathname2, $modulename, $moduleid, $mulu, $rpcpathname, $rpctype = '本地', $rpcurl = '', $rpcmainkey = '',$rpchost='',$rpcprivatekey='',$rpcmoduleid=1)
    {
        //1，科室信息表 ,存储科室基础信息及调度参数。
        $tablename="departments";
        $sql = "CREATE TABLE `".$qianzui.$tablename."` (
              dept_id char(20) NOT NULL COMMENT '科室id',
              dept_name VARCHAR(250) COMMENT '科室名称（如抽血室）',
              base_priority INT(6) COMMENT '基础优先级（1-10，值越大越优先）',
              avg_duration INT(6)  COMMENT '单项目平均耗时（分钟）',
              parallel_slots char(6)  NULL DEFAULT '1'  COMMENT '并行处理能力（如窗口数量）',
              is_active char(6)  NULL DEFAULT '1' COMMENT '是否启用（0=故障中，1=正常）',
              PRIMARY KEY (`dept_id`)
            );";
        
        $this->_db->update($sql);
        
        // 添加模块类表
        $mt = new \ZHMVC\D\ModuleTable();
        $mt->add($moduleid, ucwords($tablename));
        // 生成伪表文件
        $tf = new \ZHMVC\B\TOOL\TableToFile($qianzui, $tablename, $pathname1, $pathname2, ucwords($tablename), "admin_" . strtolower($tablename), $modulename,$rpctype, $rpcurl, $rpcmainkey, $rpchost, $rpcprivatekey, $rpcmoduleid);
        $tf->parse();
        $tf->saveContent();

        //2，检查项目表 (examitems) 定义所有体检项目及其关联科室。
        $tablename="examitems";
        $sql = "CREATE TABLE `".$qianzui.$tablename."` (
              item_id char(20)  NOT NULL COMMENT '项目id',
              item_name VARCHAR(250) COMMENT '项目名称（如血常规）',
              description TEXT COMMENT ' 项目说明（如需空腹）',
              dept_id char(20) COMMENT '归属科室ID',
              PRIMARY KEY (`item_id`)
            );";
        
        $this->_db->update($sql);
        
        // 添加模块类表
        $mt = new \ZHMVC\D\ModuleTable();
        $mt->add($moduleid, ucwords($tablename));
        // 生成伪表文件
        $tf = new \ZHMVC\B\TOOL\TableToFile($qianzui, $tablename, $pathname1, $pathname2, ucwords($tablename), "admin_" . strtolower($tablename), $modulename,$rpctype, $rpcurl, $rpcmainkey, $rpchost, $rpcprivatekey, $rpcmoduleid);
        $tf->parse();
        $tf->saveContent();
        
        //3，客人信息表 (guests),记录到店客人基本信息
        $tablename="guests";
        $sql = "CREATE TABLE `".$qianzui.$tablename."` (
              `guest_id` char(20)  NOT NULL COMMENT '客人id',
              name VARCHAR(250) NOT NULL COMMENT '姓名',
              gender ENUM('M','F') NOT NULL COMMENT '性别',
              age INT(6) NOT NULL COMMENT '年龄',
              phone VARCHAR(50) UNIQUE COMMENT '联系方式',
              is_vip char(6)  NULL DEFAULT '0' COMMENT '是否VIP（可插队）',
              register_time DATETIME COMMENT '登记时间',
              status ENUM('pending','completed') DEFAULT 'pending' COMMENT '体检状态',
              PRIMARY KEY (`guest_id`)
            );";
        
        $this->_db->update($sql);
        
        // 添加模块类表
        $mt = new \ZHMVC\D\ModuleTable();
        $mt->add($moduleid, ucwords($tablename));
        // 生成伪表文件
        $tf = new \ZHMVC\B\TOOL\TableToFile($qianzui, $tablename, $pathname1, $pathname2, ucwords($tablename), "admin_" . strtolower($tablename), $modulename,$rpctype, $rpcurl, $rpcmainkey, $rpchost, $rpcprivatekey, $rpcmoduleid);
        $tf->parse();
        $tf->saveContent();
        
        //4，排队队列表 (queues),实时记录各科室排队情况。
        $tablename="queues";
        $sql = "CREATE TABLE `".$qianzui.$tablename."` (
              `queue_id` char(20)  NOT NULL COMMENT '队列id',
              guest_id char(20)  NOT NULL COMMENT '客人ID',
              dept_id char(20)  NOT NULL COMMENT '科室ID',
              join_time DATETIME COMMENT '加入队列时间',
              start_time DATETIME COMMENT '开始检查时间（NULL表示未开始）',
              end_time DATETIME COMMENT '完成检查时间（NULL表示未完成）',
              status ENUM('waiting','processing','completed') DEFAULT 'waiting' COMMENT '状态',
              PRIMARY KEY (`queue_id`)
            );";
        
        $this->_db->update($sql);
        
        // 添加模块类表
        $mt = new \ZHMVC\D\ModuleTable();
        $mt->add($moduleid, ucwords($tablename));
        // 生成伪表文件
        $tf = new \ZHMVC\B\TOOL\TableToFile($qianzui, $tablename, $pathname1, $pathname2, ucwords($tablename), "admin_" . strtolower($tablename), $modulename,$rpctype, $rpcurl, $rpcmainkey, $rpchost, $rpcprivatekey, $rpcmoduleid);
        $tf->parse();
        $tf->saveContent();
        
        //5，报表统计表 (reports)每日运营数据汇总。
        $tablename="reports";
        $sql = "CREATE TABLE `".$qianzui.$tablename."` (
              `report_id` char(20)  NOT NULL COMMENT 'id',
              report_date DATE NOT NULL COMMENT '统计日期',
              total_guests INT(6) DEFAULT 0 COMMENT '当日总客流量',
              avg_wait_time INT(6) COMMENT '平均等待时间（分钟）',
              max_wait_time INT(6) COMMENT '最长等待时间',
              dept_load_rate TEXT COMMENT 'JSON格式科室负载率（如{抽血室:80%, B超室:60%}）',
              PRIMARY KEY (`report_id`)
            );";
        
        $this->_db->update($sql);
        
        // 添加模块类表
        $mt = new \ZHMVC\D\ModuleTable();
        $mt->add($moduleid, ucwords($tablename));
        // 生成伪表文件
        $tf = new \ZHMVC\B\TOOL\TableToFile($qianzui, $tablename, $pathname1, $pathname2, ucwords($tablename), "admin_" . strtolower($tablename), $modulename,$rpctype, $rpcurl, $rpcmainkey, $rpchost, $rpcprivatekey, $rpcmoduleid);
        $tf->parse();
        $tf->saveContent();
       
        return 1;
    }
}
